package negocio;

import java.util.ResourceBundle;

import cursoDAO_disciplinaDAO.DisciplinaDAO;
import cursoDAO_disciplinaDAO.DisciplinaDAOArquivo;
import cursoDAO_disciplinaDAO.DisciplinaDTO;

public class Disciplina {
	private String nome;
	private String codigo;
	private int cargaHoraria;
	private String resumo;
	private int creditosTeoricos;
	private int creditosPraticos;
	private Curso curso;

	private static DisciplinaDAO getDao() {
		DisciplinaDAO dao = null;

		if (ResourceBundle.getBundle("resources.dao").getString("metodo")
				.equals("arquivo"))
			dao = new DisciplinaDAOArquivo();

		return dao;
	}
	
	public Disciplina(){
		
	}

	public Disciplina(String codigo) {
		DisciplinaDTO dto = getDao().encontrarDisciplina(codigo);
		this.nome = dto.getNome();
		this.codigo = dto.getCodigo();
		this.curso = new Curso(dto.getCodigoCurso());
		this.cargaHoraria = dto.getCargaHoraria();
		this.resumo = dto.getResumo();
		this.creditosTeoricos = dto.getCreditosTeoricos();
		this.creditosPraticos = dto.getCreditosPraticos();
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public int getCargaHoraria() {
		return cargaHoraria;
	}

	public void setCargaHoraria(int cargaHoraria) {
		this.cargaHoraria = cargaHoraria;
	}

	public String getResumo() {
		return resumo;
	}

	public void setResumo(String resumo) {
		this.resumo = resumo;
	}

	public int getCreditosTeoricos() {
		return creditosTeoricos;
	}

	public void setCreditosTeoricos(int creditosTeoricos) {
		this.creditosTeoricos = creditosTeoricos;
	}

	public int getCreditosPraticos() {
		return creditosPraticos;
	}

	public void setCreditosPraticos(int creditosPraticos) {
		this.creditosPraticos = creditosPraticos;
	}

	public Curso getCurso() {
		return curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}

	public boolean isTeorica() {
		return creditosTeoricos != 0 ? true : false;
	}

	public boolean isPratica() {
		return creditosPraticos != 0 ? true : false;
	}

	public void salvar() {
		DisciplinaDTO dto = new DisciplinaDTO();

		dto.setCodigo(codigo);
		dto.setNome(nome);		
		dto.setCargaHoraria(cargaHoraria);
		dto.setResumo(resumo);
		dto.setCreditosTeoricos(creditosTeoricos);
		dto.setCreditosPraticos(creditosPraticos);
		//dto.setCodigoCurso(codigoCurso); //FIXME

		getDao().salvarDisciplina(dto);
	}

	public static void imprimirLista() {
		getDao().imprimirDisciplinas();
	}

	public void remover() {
		// TODO Auto-generated method stub
		
	}
	
	

}
